import java.util.Random;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:猜数字游戏
 * User: 阿宾
 * Date: 2024-05-03 、
 * Time: 15:55
 */
public class Test02 {
    public static void main1(String[] args) {
        Scanner scan = new Scanner(System.in);
        Random random = new Random();//为了生成随机数
        int randNum = random.nextInt(101);//[0,101)

        //50-100的随机数生成，random.nextInt(51)--[0,51)+50--->[50,101)
        while(true){
            System.out.println("请输入你要猜的数字：");
            int num = scan.nextInt();

            if(num > randNum){
                System.out.println("猜大了");
            }else if(num < randNum){
                System.out.println("猜小了");
            }else{
                System.out.println("猜对了！！");
                break;
            }
        }
    }

    public static void main2(String[] args) {
        //判断一个数字是否是素数:除了1和它本身外没有其他数可以整除
        Scanner scan  = new Scanner(System.in);
        int num = scan.nextInt();
        //求开根号的方式 Math.sqrt()
        int i = 0;
        for (i = 2; i <= Math.sqrt(num); i++) {
            if(num % 2 == 0) {
                break;
            }
        }
        //跳出循环两种情况
        //1.遇到break,不满足条件;2.i>Math.sqrt(num),满足条件
        if(i > Math.sqrt(num) && num > 1){
            System.out.println(num + "是素数");
        }else{
            System.out.println(num + "不是素数");
        }
    }

    public static void main3(String[] args) {
        //输出乘法口诀表
        int i = 0;
        for(i = 1;i <= 9;i++){
            int j = 0;
            for(j = 1;j <= i;j++){
                System.out.print(j + "*" + i + "=" + i*j+" ");
            }
            System.out.println();
        }
    }

    public static void main4(String[] args) {
        //求两个正整数的最大公约数：辗转相除法
        Scanner scan = new Scanner(System.in);
        System.out.println("请输入第一个数：");
        int num1 = scan.nextInt();
        System.out.println("请输入第二个数：");
        int num2 = scan.nextInt();
        int num3 = num1 % num2;
        while(num3 != 0){
            num1 = num2;
            num2 = num3;
            num3 = num1 % num2;
        }
        System.out.println(num2);
    }

    public static void main5(String[] args) {
        //求水仙花数
        int num = 0;
        for(num = 100;num <= 999999;num++){
            int count = 0;//统计输入数的位数
            int tmp = num;
            //统计输入数字的总位数
            while(tmp != 0){
                tmp /= 10;
                count++;
            }
            tmp = num;
            int sum = 0;
            while(tmp != 0){
                sum += Math.pow(tmp % 10,count);//pow(x,y)是x的y次方
                tmp /= 10;
            }
            if(sum == num){
                System.out.print(num + " ");
            }
        }

    }

    public static void main6(String[] args) {
        //返回参数二进制中1的个数
        /*int num = 15;
        int count = 0;//统计个数
        for (int i = 0; i < 32; i++) {
            if(((num >> i) & 1) == 1){
                count++;
            }
        }
        System.out.println(count);*/
        int num = 15;
        int count = 0;
        while(num != 0){
            count++;
            num = num & (num-1);
        }
        System.out.println(count);
    }

    public static void main7(String[] args) {
        //获取一个数二进制序列中所有的偶数位和奇数位，分别输出二进制序列。
        System.out.println("请输入一个整数：");
        Scanner scan = new Scanner(System.in);
        int num = scan.nextInt();
        //输入的是一个int类型的数值
        //偶数位：
        for (int i = 31; i >= 1; i-=2) {
            System.out.print(((num >> i) & 1) + " ");
        }
        System.out.println();
        //奇数位：
        for (int i = 30; i >=0 ; i-=2) {
            System.out.print(((num >> i) & 1) + " ");

        }
    }

    public static void main8(String[] args) {
        //编写程序数一下 1到 100 的所有整数中出现多少个数字9
        //9 19 29 39 49 59 69 79 89 99 91 92 93 94 95 96 97 98
        int count = 0;
        for (int i = 1; i <= 100 ; i++) {
            if((i % 10 == 9) || (i / 10 == 9)){
                count++;
            }
        }
        System.out.println(count-1);//因为99多算了一次
    }

    public static void main9(String[] args) {
        //计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值.
        double sum = 0;
        int flag = 1;
        for (int i = 1; i <= 100; i++) {
            sum += flag * 1.0 / i;
            flag = -flag;
        }
        System.out.println(sum);
    }

    public static void main10(String[] args) {
        //输出一个整数的每一位，如：123的每一位是3，2，1
        int num = 123;
        while(num != 0){
            System.out.print(num % 10+" ");
            num /= 10;
        }

    }

    public static void main(String[] args) {
        /*
        编写代码模拟三次密码输入的场景。 最多能输入三次密码，密码正确，
        提示“登录成功”,密码错误，可以重新输入，最多输入三次。三次均错，则提示退出程序
         */
        System.out.println("请输入密码(范围是[0,101))：");
        Scanner scan  = new Scanner(System.in);
        Random random = new Random();
        int randNum = random.nextInt(101);//生成的随机密码

        int maxCount = 3;
        while(maxCount != 0){
            int num = scan.nextInt();
            if(num == randNum){
                System.out.println("登录成功");
                break;
            }else{
                maxCount--;
                System.out.println("请重新输入,你还有"+maxCount+"次机会");
            }

        }
        System.out.println("退出程序");


    }
}
